home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / utilsys / rss14gmd.lha / RSys_1.4gmd / C / Global.c < prev    next >
C/C++ Source or Header  |  1996-05-04  |  12KB  |  555 lines

  1.  
  2. /*
  3.    ***************************************************************************
  4.    *
  5.    * Datei:
  6.    *      RSysGlobal.c
  7.    *
  8.    * Inhalt:
  9.    *
  10.    *      --- Globale Routinen ---
  11.    *
  12.    *
  13.    *      --- Lokale  Routinen ---
  14.    *
  15.    *
  16.    * Bemerkungen:
  17.    *      Globale Daten für RSys (Flags, Menus etc.)
  18.    *
  19.    * Erstellungsdatum:
  20.    *      07-Jul-93     Rolf Böhme
  21.    *
  22.    * Änderungen:
  23.    *      07-Jul-93     Rolf Böhme        Erstellung
  24.    *
  25.    ***************************************************************************
  26.  */
  27.  
  28. #include "RSys.h"
  29.  
  30. LIBRARY *DiskfontBase = NULL;
  31. LIBRARY *AslBase = NULL;
  32. LIBRARY *GadToolsBase = NULL;
  33. LIBRARY *UtilityBase = NULL;
  34. LIBRARY *CxBase = NULL;
  35. LIBRARY *IFFParseBase = NULL;
  36. LIBRARY *IconBase = NULL;
  37.  
  38.  
  39. DISKOBJECT *ProgramIcon;
  40. APPICON *appicon = NULL;
  41. WORKBENCHBASE *WorkbenchBase = NULL;
  42. INTUITIONBASE *IntuitionBase = NULL;
  43. GFXBASE *GfxBase = NULL;
  44. EXPANSIONBASE *ExpansionBase = NULL;
  45. AMIGAGUIDEBASE *AmigaGuideBase = NULL;
  46.  
  47. UBYTE namebuffer[MAXPUBSCREENNAME + 1] = "Workbench", autocon[MAXFULLNAME];
  48.  
  49. char _fullpath[MAXFULLNAME];
  50.  
  51. LIST ListeLVList;
  52.  
  53. SCREEN *Scr = NULL;
  54. APTR VisualInfo = NULL;
  55. WINDOW *SysWnd = NULL;
  56. GADGET *SysGList = NULL;
  57. MENU *SysMenus = NULL;
  58. UWORD SysZoom[4];
  59. GADGET *SysGadgets[20];
  60.  
  61. #if 0
  62. UWORD SysLeft = 153;
  63. UWORD SysTop = 30;
  64. UWORD SysWidth = 487;
  65. UWORD SysHeight = 183;        /*173 */
  66. #else
  67.  
  68. UWORD SysLeft = 00;
  69. UWORD SysTop = 00;
  70. UWORD SysWidth = 500;
  71. UWORD SysHeight = 320;        /*173 */
  72. #endif
  73.  
  74.  
  75. UBYTE *SysWdt = (UBYTE *) NAME " " VERSION " (" DATE ", " TIME ")";
  76. TEXTATTR *Font;
  77. UWORD FontX, FontY;
  78. UWORD OffX, OffY;
  79. TEXTATTR TAttr;
  80. TEXTATTR Topaz80 =
  81. {
  82.   (STRPTR) "topaz.font", TOPAZ_EIGHTY, FS_NORMAL, FPF_ROMFONT
  83. };
  84.  
  85. MSGPORT *SysIdPort;
  86.  
  87. RSYS_ScrollEntry *Entries = NULL;
  88.  
  89. UBYTE gbuf[BUFSIZE];
  90.  
  91. /*
  92.  * SEE List.c: RefreshList() 
  93.  * GMD ; EA_ things added
  94.  */
  95.  
  96. void MakeTaskList (void);
  97. void MakeLibList (void);
  98. void MakeMemoryList (void);
  99. void MakePortList (void);
  100. void MakeVolumeList (void);
  101. void MakeAssignList (void);
  102. void MakeFontList (void);
  103. void MakeResourceList (void);
  104. void MakeIntrList (void);
  105. void MakeWindowList (void);
  106. void MakeScreenList (void);
  107. void MakeHandlerList (void);
  108. void MakeSystemList (void);
  109. void MakeHardwareList (void);
  110. void SysPrefList (void);
  111. void SysResidentList (void);
  112. void SysAvailFontsList (void);
  113. void SysEnvList (void);
  114. void SysCLIList (void);
  115. void SysResidentProg (void);
  116. void SysSemaphoreList (void);
  117. void SysVectorList (void);
  118. void SysSoftDeviceList (void);
  119. void SysPubScreenList (void);
  120. void SysPubScreenList (void);
  121. void SysBlitterWaitList (void);
  122. void SysTOFWaitList (void);
  123. void SysBrokerList (void);
  124. void SysExtPrinterData (void);
  125. void SysCheckOffs (void);
  126. void RSysGetDisplayModes (void);
  127. void RSysLockList (void);
  128. void RSysAmigaGuideRefList (void);
  129. void RSysGadgetList (void);
  130. void RSysMemoryAreaList (void);
  131. void RSysFaultMessages (void);
  132.  
  133.  
  134. RSYS_EntryAttribute EntryAttr[] =
  135. {
  136.    /* 00 */
  137.   {"Task", "Address  Task/Proc           Typ  Pri Stack Stat Cli    ",
  138.    "%08lX %-18.18s %4.4s %4ld %5ld %4.4s %3.3s", MakeTaskList, EA_C_HELP},
  139.  
  140.   /* 01 */
  141.   {"Library", "Address  Libraryname               Version  OpenCnt  O",
  142.    "%08lX %-25s %4ld.%-4ld %7ld %lc", MakeLibList, EA_C},
  143.  
  144.   /* 02 */
  145.   {"Memory", "Memory address     Size    Type",
  146.    "%08lX     %10ld %s", MakeMemoryList, EA_NOTC},
  147.  
  148.   /* 03 */
  149.   {"Port", "Address  Portname               Signal-Task      Pri",
  150.    "%08lX %-22s %-15s %4ld", MakePortList, EA_C},
  151.  
  152.   /* 04 */
  153.   {"Volume", "Volumename         K-Free K-Used %Used F Sta Typ",
  154.    "%-18.18s %6ld %6ld %4ld%% %lc %3.3s %4.4s", MakeVolumeList, EA_C},
  155.  
  156.   /* 05 */
  157.   {"Assign", "Assign        Directory",
  158.    "%-13.13s %-39.39s", MakeAssignList, EA_C},
  159.  
  160.   /* 06 */
  161.   {"Font", "Address  Fontname             Typ    Y   X Low Upp",
  162.    "%08lX %-20s %-4s %3ld %3ld %3ld %3ld", MakeFontList, EA_C},
  163.  
  164.   /* 07 */
  165.   {"Resource", "Address  Resourcename                Version  OpenCnt",
  166.    "%08lX %-26.26s %5ld.%-4ld %6ld", MakeResourceList, EA_C},    /*GMD */
  167.  
  168.   /* 08 */
  169.   {"Interrupt", "Address  Interruptname         Pri   Data     Code",
  170.    "%08lX %-20.20s %4ld %08lX %08lX", MakeIntrList, EA_C},
  171.  
  172.   /* 09 */
  173.   {"Window", "Address  Windowtitle         H   W   X   Y Screen",
  174.    "%08lX %-17.17s %3ld %3ld %3ld %3ld %-10.10s", MakeWindowList, EA_C},
  175.  
  176.   /* 10 */
  177.   {"Screen", "Address  Screentitle               H   W   X   Y Typ",
  178.    "%08lX %-23.23s %3ld %3ld %3ld %3ld %3.3s", MakeScreenList, EA_C},
  179.  
  180.   /* 11 */
  181.   {"Input Handler", "Address  Inputhandler name     Pri   Data     Code",
  182.    "%08lX %-20.20s %4ld %08lX %08lX", MakeHandlerList, EA_C},
  183.  
  184.   /* 12 */
  185.   {"System Infos", "                      Systeminfo",
  186.    NULL, MakeSystemList, EA_NOTC},
  187.  
  188.   /* 13 */
  189.   {"Hardware Infos", "                  Hardware/Expansion",
  190.    NULL, MakeHardwareList, EA_NOTC},
  191.  
  192.   /* 14 */
  193.   {"Online Help", "                     Online Help",
  194.    NULL, NULL, EA_NOTC},
  195.  
  196.   /* 15 */
  197.   {"Preferences", "                     Preferences", NULL,
  198.    SysPrefList, EA_NOTC},
  199.  
  200.   /* 16 */
  201.   {"Devices/Handler", "Device name   Driver/Handler",
  202.    "%-13.13s %-28.28s", SysResidentList, EA_C},
  203.  
  204.   /* 17 */
  205.   {"Diskfonts", "Font name            Type   Y Style",
  206.    "%-20.20s %-4.4s %3ld %10.10s", SysAvailFontsList, EA_C},
  207.  
  208.   /* 18 */
  209.   {"ENV:-List", "ENV-Variable  Content",
  210.    "%-13.13s %-28.28s", SysEnvList, EA_C},
  211.  
  212.   /* 19 */
  213.   {"CLI-List", "Address  CLI nr. Name             Pri  Stack",
  214.    "%08lX CLI %-3ld %-15.15s %4ld %6ld", SysCLIList, EA_C},
  215.  
  216.   /* 20 */
  217.   {"Resident Program", "Address  Resident name    UseCount  Type",
  218.    "%08lX %-20.20s %4ld %-14.14s", SysResidentProg, EA_C},
  219.  
  220.  
  221.   /* 21 */
  222.   {"Semaphore", "Address  Semaphore name          Pri Ownertask",
  223.    "%08lX %-22.22s %4ld %-12.12s", SysSemaphoreList, EA_C},
  224.  
  225.   /* 22 */
  226.   {"System vector", "                   System Vectors",
  227.    NULL, SysVectorList, EA_NOTC},
  228.  
  229.   /* 23 */
  230. {"Software Device", "Address  Devicename                  Version  OpenCnt",
  231.  "%08lX %-26.26s %4ld.%-4ld %6ld", SysSoftDeviceList, EA_C},
  232.  
  233.   /* 24 */
  234.   {"Public Screen", "Address  Name              VCnt SigTask",
  235.    "%08lX %-18.18s %3ld %-9.9s", SysPubScreenList, EA_C},
  236.  
  237.   /* 25 */
  238.   {"Blitter Waiter", "Address  Name                 Prio",
  239.    "%08lX %-20.20s %3ld", SysBlitterWaitList, EA_C},
  240.  
  241.   /* 26 */
  242.   {"TOF Waiter", "Address  Name                 Prio",
  243.    "%08lX %-20.20s %3ld", SysTOFWaitList, EA_C},
  244.  
  245.   /* 27 */
  246.   {"Commodity", "Address  Name                 Prio",
  247.    "%08lX %-20.20s %3ld", SysBrokerList, EA_C},
  248.  
  249.  
  250.   /* 28 */
  251.   {"Printer data", "                    Printer data",
  252.    NULL, SysExtPrinterData, EA_NOTC},
  253.  
  254.   /* 29 */
  255.   {"Library offsets", "Offs Address  Act Function",
  256.    "%4ld %08lX %3s %-22.22s", SysCheckOffs, EA_NOTC},
  257.  
  258.   /* 30 */
  259.   {"Available Display Modes", "Address  Name              Depth   MinR      MaxR",
  260.    "%08lX %-17.17s  %3ld  %4ld,%-4ld %4ld,%-4ld", RSysGetDisplayModes, EA_C},
  261.  
  262.   /* 31 */
  263.   {"Volume locks", "Address  File                                Access ",
  264.    "%08lX %-35.35s  %-5s", RSysLockList, EA_C},
  265.  
  266.   /* 32 */
  267.   {"Amigaguide XRef", "Address  XRef keyword   Type File           Line",
  268.    "%08lX %-14.14s %4.4s %-15.15s %4ld", RSysAmigaGuideRefList, EA_C},
  269.  
  270.   /* 33 */
  271.   {"Gadgets", "Address  Gadget text    Typ    PosX PosY    W    H",
  272.    "%08lX %-14.14s %6.6s %4ld %4ld %4ld %4ld", RSysGadgetList, EA_NOTC},
  273.  
  274.   /* 34 */
  275.   {"Memory areas", "Startadr Endadr   Attributes  Comment",
  276.    "%08lX %08lX %3.3s %3.3s %3.3s %-22.22s", RSysMemoryAreaList, EA_C},
  277.  
  278.   /* 35 */
  279.   {"Fault codes", "Fault  Message",
  280.    "%3ld   %-50.50s", RSysFaultMessages, EA_C},
  281. };
  282.  
  283. RSYS_flags Flags =
  284. {
  285.   1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1,
  286.  
  287. /* RSys private */
  288.   1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  289.  
  290. /* Dummys */
  291.   0, 0, 0, 0, 0
  292. };
  293.  
  294. int countentries;
  295. int topentry;
  296.  
  297. int LastID = SYSTEMINFO;
  298.  
  299. int ReopenWindow = FALSE;
  300.  
  301. int bpc = 0;
  302. int bgc = 0;
  303. long bpp = 0;
  304. int winddetail = 0;
  305. int windblock = 1;
  306. int menudetail = 0;
  307. int iconx = NO_ICON_POSITION;
  308. int icony = NO_ICON_POSITION;
  309. int listviewheight = 10;
  310.  
  311. char *RSysName = NULL;
  312.  
  313. #if 0
  314. enum _field
  315.   {
  316.     NO_FIELD,
  317.     NO_LIB_ID,
  318.     NO_FLAGS,
  319.     NO_TASK,
  320.     NO_NODE,
  321.     WRONG_TYPE_FMT,
  322.     NO_TYPE,
  323.     NO_TITLE,
  324.     NO_BAUD,
  325.     NO_PARITY,
  326.     NO_HANDSHK,
  327.     NO_HANDLER,
  328.     NO_FILE,
  329.     NO_LOCK,
  330.     BLANK_FIELD,
  331.     NO_FD_FIELD,
  332.     HAS_IMAGE,
  333.     UNKNOWN_FIELD
  334.   };
  335. #endif
  336. const char *field[] =
  337. {
  338. /*NO_FIELD, */ "-",
  339. /*NO_LIB_ID, */ "<no id>",
  340. /*NO_FLAGS, */ "<no flags>",
  341. /*NO_TASK, */ "<no task>",
  342. /*NO_NODE, */ "<no node>",
  343. /*WRONG_TYPE_FMT, */ "<wrong type: %ld>",
  344. /*NO_TYPE, */ "<??>",
  345. /*NO_TITLE, */ "<no title>",
  346. /*NO_BAUD, */ "<no baudrate>",
  347. /*NO_PARITY, */ "<no parity>",
  348. /*NO_HANDSHK, */ "<no handshk>",
  349. /*NO_HANDLER, */ "<no handler>",
  350. /*NO_FILE, */ "<no file>",
  351. /*NO_LOCK, */ "<no lock>",
  352. /*BLANK_FIELD, */ "",
  353. /*NO_FD_FIELD, */ "<no FD-Offsets>",
  354. /*HAS_IMAGE, */ "<has image>",
  355. /*UNKNOWN_FIELD */ "<unknown>"
  356. /* */ ""
  357. };
  358.  
  359. RSYSFILES RSysFiles =
  360. {
  361.   "PROGDIR:" NAME "Hardware.DAT",
  362.   "PROGDIR:" NAME "LibOff.DAT",
  363.   "PROGDIR:" NAME "13.guide",
  364.   "PROGDIR:" NAME "13.guide.context",
  365.   "PROGDIR:" NAME "Action.dat"
  366. };
  367.  
  368. /*
  369.  * GMD added stuff
  370.  */
  371.  
  372. RSYS_acts *Actions;
  373. LIST ActionList;
  374. LIST DisplayList;
  375. int counter;
  376. LIST DL;
  377.  
  378. MSGPORT *broker_mp = NULL;
  379. CxObj *broker, *filter[HOTKEYS + 1], *sender, *translate;
  380. char hotkey[HOTKEYS + 1][30];
  381.  
  382. NEWBROKER newbroker =
  383. {
  384.   NB_VERSION,
  385.   NAME,
  386.   NAME " " VERSION " - " COPYRIGHT,
  387.   "RSys Commodity Handler",
  388.   NBU_UNIQUE,
  389.   NULL /*COF_SHOW_HIDE */ ,
  390.   0,
  391.   0,
  392.   0
  393. };
  394. SCREEN *lastpubscreen = NULL;
  395.  
  396. REMEMBER *FKey = NULL;
  397. LIST FuncList;
  398.  
  399. MANUFACTURER *manu;
  400.  
  401. char **company_str;
  402. UBYTE *context[MONITOR + 1];
  403. int hardwarecnt = 0;
  404. LIST Libraries;
  405. LIST ValidMemoryList;
  406.  
  407. long maxentries;
  408.  
  409. int LVH = 85;
  410. int WndH = 183;
  411. int SysMinH = 132;
  412. int newlvh;
  413.  
  414. NODE *actualfindnode;
  415. long actualfindnodenum = 0;
  416.  
  417. char _file[PATHPARTWIDTH];
  418. char _dir[MAXFULLNAME];
  419.  
  420.  
  421. int decnt = 0;
  422. int breakit = FALSE;
  423.  
  424. TEXTFONT *tf = NULL;
  425.  
  426. TEXTATTR tree_ta =
  427. {
  428.  
  429.   (STRPTR) "ibm.font",
  430.   8,
  431.   0,
  432.   2
  433. };
  434. /*
  435.  * string for AmigaDOS Version Command (GMD)
  436.  */
  437. char A_vers[] = "\0$VER: RSys\t" VERSION " " __AMIGADATE__;
  438.  
  439.  
  440. UBYTE *TreeWdt = (UBYTE *) NAME " " VERSION " - Directory Tree Lister";
  441. UBYTE *TreeWdt1 = (UBYTE *) NAME " " VERSION " - Hunk Lister";
  442.  
  443. WINDOW *TreeWnd = NULL;
  444. GADGET *TreeGList = NULL;
  445. GADGET *TreeGadgets[3];
  446.  
  447. int global_type;
  448.  
  449. char *mess[] =
  450. {
  451.   "Disk/Directory",
  452.   "File",
  453.   "Icon file",
  454.   "Text file",
  455.   "C Sourcefile",
  456.   ".h-C-Include",
  457.   "Assembler file",
  458.   "Assembler-Include file",
  459.   ".MOD file",
  460.   "ARexx program",
  461.   "BASIC program",
  462.   "TeX file",
  463.   "MetaFONT file",
  464.   "GF file",
  465.   "TeX-Font file",
  466.   "TeX-DVI file",
  467.   "Font library",
  468.   "MANX Objectfile (V3.x)",
  469.   "MANX Objectfile (V5.x)",
  470.   "MANX Libraryfile (V3.x)",
  471.   "MANX Libraryfile (V5.x)",
  472.   "Objekt file",
  473.   ".LIB file (Object library)",
  474.   "Executable",
  475.   "Library",
  476.   "Device",
  477.   "Filesystem",
  478.   "Handler",
  479.   "GIF picture",
  480.   "ILBM graphic",
  481.   "Animation",
  482.   "8SVX song",
  483.   "SMUS-Song",
  484.   "FTXT format",
  485.   "Preferences",
  486.   "Term file",
  487.   "Imploder file",
  488.   "Powerpacker file",
  489.   "Arc archive",
  490.   "LHArc archive",
  491.   "Zoo archive",
  492.   "ZIP archive",
  493.   "DMS archive",
  494.   "WARP archive",
  495.   "ZOOM archive",
  496.   "WordPerfect document"
  497. };
  498.  
  499.  
  500. /*
  501.  * Some file name suffixes for text files and the approriate file types.
  502.  */
  503.  
  504. RSYS_Suffix TextSuffix[] =
  505. {
  506.   ".C", TYPE_C,
  507.   ".CP", TYPE_C,
  508.   ".CC", TYPE_C,
  509.   ".H", TYPE_H,
  510.   ".ASM", TYPE_ASM,
  511.   ".A", TYPE_ASM,
  512.   ".S", TYPE_ASM,
  513.   ".I", TYPE_I,
  514.   ".BAS", TYPE_BASIC,
  515.   ".GFA", TYPE_BASIC,
  516.   ".REXX", TYPE_REXX,
  517.   ".CED", TYPE_REXX,
  518.   ".VLT", TYPE_REXX,
  519.   ".CPR", TYPE_REXX,
  520.   ".TxEd", TYPE_REXX,
  521.   ".TEX", TYPE_TEX,
  522.   ".STY", TYPE_TEX,
  523.   ".MF", TYPE_METAFONT,
  524.   ".MOD", TYPE_MOD,
  525.   ".DEF", TYPE_MOD,
  526.   ".WP", TYPE_WORDPERFECT
  527. };
  528.  
  529. /*
  530.  * Some more file name suffixes for executable files and the approriate
  531.  * file types.
  532.  */
  533.  
  534. RSYS_Suffix ExecutableSuffix[] =
  535. {
  536.   ".device", TYPE_DEVICE,
  537.   ".library", TYPE_LIBRARY,
  538.   "FileSystem", TYPE_FILESYS,
  539.   "Handler", TYPE_HANDLER
  540. };
  541.  
  542. €
  543.  
  544. /*
  545.  * GMD ; minimise refs to VERSION (recompile main.c only)
  546.  */
  547. char *
  548. get_vers (char *ptr)
  549. {
  550.   static char buf[100];
  551.  
  552.   sprintf (buf, "%s%s", NAME " " VERSION, ptr);
  553.   return (buf);
  554. }
  555.